//package com.suisung.shopsuite.common.config;
//
//import com.suisung.shopsuite.common.config.shire.SecureStaticFilter;
//import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
//import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//
//import javax.servlet.Filter;
//import java.util.Arrays;
//import java.util.LinkedHashMap;
//import java.util.Map;
//
//public class ShireConfig {
//    @Value("${shiro.excluded-paths}")
//    private String excludedPaths;
//
//    // 自定义安全过滤器
//    @Bean
//    public SecureStaticFilter secureStaticFilter() {
//        return new SecureStaticFilter();
//    }
//
//    @Bean
//    public ShiroFilterFactoryBean shiroFilter(DefaultWebSecurityManager securityManager, SecureStaticFilter secureStaticFilter) {
//        ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
//        factoryBean.setSecurityManager(securityManager);
//
//        // 配置自定义过滤器
//        Map<String, Filter> filters = new LinkedHashMap<>();
//        filters.put("secure-static", secureStaticFilter);
//        factoryBean.setFilters(filters);
//
//        // 动态构建过滤链
//        LinkedHashMap<String, String> filterChainMap = new LinkedHashMap<>();
//
//        // 处理排除路径
//        Arrays.stream(excludedPaths.split(","))
//                .map(String::trim)
//                .forEach(pattern -> {
//                    if (pattern.startsWith("/static")) {
//                        filterChainMap.put(pattern, "secure-static");
//                    } else {
//                        filterChainMap.put(pattern, "anon");
//                    }
//                });
//
//        // 其他请求需要认证
//        filterChainMap.put("/**", "authc");
//
//        factoryBean.setFilterChainDefinitionMap(filterChainMap);
//        return factoryBean;
//    }
//}
